# 1. 在app内创建forms文件继承forms。Form
# 在view视图中调用创建表单对象，传给页面
# 也可以自己写好通过post去验证穿给forms
# title = a.cleaned_data.get('title')
# 通过以上方法获取数据会保留原来数据格式

# 2.表单常用字段
# charField()
# 最大长度，最小长度，是否必须，error_message

# EmailField()
#输入邮箱

# URLField()
# 必须输入url

# 3.常用验证器
# from django.core import validators
# phone = forms.CharField(validators=[])
# phone = forms.CharField(validators=[validators.RegexValidator(r'^(13[0-9]|14[5|7]|15[0-9]|18[0|1|2|3|5|6|7|8|9])\d{8}$')])

# 4.自定义验证器

# 除了常用的验证器
# 可以自定义
# def clean_字段名(self)
#      phone = self.cleaned_data_get("phone")
#      exist = User.object.filter().exist()
#      if exist:
#          raise forms.ValidationError(message=xxx)

# def clean(self):所有验证完走clean


# 5.ModelForm
# 通过model建立表单

# 加验证器就在model里加，错误信息在
# class Addbook(forms.ModelForm):
#     class Meta:
#         model = Book
#         fields = '__all__'
#         # exclude = ['page']
#
#         error_messages = {
#             "page": {
#
#             }
#         }

# 使用form.save()直接保存在数据库中，前提是拥有model的所有字段
# 可以先form.save(commit=False)


# 6.文件上传

# 模型中使用model使用Fields字段（upload=路径）
# 创建media文件夹，setting设置MEDIA_ROOT
# MEDIA_URL=/media/
# 设置完后不设置upload=路径也可以，都设置会建立子文件夹